home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 6 / clmfeb85.zip / CASM.4 < prev    next >
Text File  |  1988-07-25  |  3KB  |  91 lines

  1.  
  2.                             Listing 4
  3.                     C to Assembler Interface
  4.  
  5.  
  6. #define PAGE 0
  7.  /* video modes */
  8. #define s40x25_bw 0
  9. #define s40x25_color 1
  10. #define s80x25_bw 2
  11. #define s80x25_color 3
  12. #define med_color 4
  13. #define med_bw 5
  14. #define high_bw 6
  15.  /* video functions */
  16. #define set_type 256
  17. #define set_cur 512
  18. #define read_position 768
  19. #define read_light_pen_position 1024
  20. #define select_page 1280
  21. #define scroll_up 1536
  22. #define scroll_dn 1792
  23. #define read_attribute_char 2048
  24. #define write_attribute_char 2304
  25. #define write_char 2560
  26. #define set_palette 2816
  27. #define write_dot 3072
  28. #define read_dot 3328
  29. #define write_teletype 3584
  30. #define get_state 3840
  31.  /* macros */
  32. #define curpos(row,col) dispio(set_cur,PAGE,(((int)row)<<8)+col)
  33. #define SET_MODE dispio(s80x25_bw)
  34. #define horline(ch,width) dispio(write_char+ch,PAGE,width) 
  35. #define hline(row,col,ch,width) curpos(row,col) ; horline(ch,width)
  36. #define wrtchar(ch) dispio(write_char+ch,PAGE,1)
  37.  
  38. main()
  39. {
  40.  int retvals [2] ;
  41.  int index ;
  42.   SET_MODE ;
  43.   hline(0,0,219,80) ;   /* draw box around screen */
  44.   hline(24,0,219,80) ;
  45.   verline(0,0,219,24) ;
  46.   verline(0,79,219,24) ;
  47.   window(3,3,6,5) ;
  48.   window(10,10,5,6) ;
  49.   window(7,17,10,11) ;
  50.   window(15,40,10,6) ;
  51.   window(5,50,20,16) ;
  52.   curpos(0,0) ;
  53.       /* read cursor position */
  54.   for (index=0; index <4; index++ ) {
  55.     curpos(index,index+1) ;
  56.     dispio(read_position,PAGE,retvals) ;
  57.     printf("For page PAGE, Row:%u, Col:%u, cursor mode=%o,%o \n",
  58.       retvals[1]>>8, (retvals[1]<<8)>>8, retvals[0]>>8,(retvals[0]<<8)>>8) ; 
  59.   }
  60.      /* get current video state */
  61.   dispio(get_state,retvals) ;
  62.   printf("Mode: %u, Columns: %u, Active Page: %u \n",
  63.      (retvals[0]<<8)>>8, retvals[0]>>8, retvals[1]>>8 ) ;
  64. }
  65. window(row,col,width,depth) /* start at row,col, i.e. left upper corner */
  66. char row,col ;
  67. {
  68.      /* first do 4 corners */
  69.   curpos(row,col) ;
  70.   wrtchar(214) ;
  71.   curpos(row+depth,col) ;
  72.   wrtchar(211) ; 
  73.   curpos(row,col+width-1) ;
  74.   wrtchar(183) ;
  75.   curpos(row+depth,col+width-1) ;
  76.   wrtchar(189) ;
  77.      /* then connect corners with horizontal and vertical lines */
  78.   hline(row,col+1,196,width-2) ;
  79.   hline(row+depth,col+1,196,width-2) ;
  80.   verline(row+1,col,186,depth-1) ;
  81.   verline(row+1,col+width-1,186,depth-1) ;
  82. }
  83. verline(row,col,ch,len)
  84. char row, col, ch, len ;
  85. {
  86.   char cnt ;
  87.      for (cnt=len; cnt > 0; cnt--) {
  88.     curpos(row++,col) ;
  89.     wrtchar(ch) ;
  90.      }
  91. }